diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk
index 8439cbc..a14e233 100644
--- a/BoardConfigCommon.mk
+++ b/BoardConfigCommon.mk
@@ -20,7 +20,6 @@
 ANDROID_ENABLE_RENDERSCRIPT := true
 
 # BT configs
-BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/linaro/hikey/bluetooth
 BOARD_HAVE_BLUETOOTH := true
 
 # generic wifi
diff --git a/bluetooth/bdroid_buildcfg.h b/bluetooth/bdroid_buildcfg.h
deleted file mode 100644
index a2ce34b..0000000
--- a/bluetooth/bdroid_buildcfg.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _BDROID_BUILDCFG_H
-#define _BDROID_BUILDCFG_H
-
-#define BTM_DEF_LOCAL_NAME   "Android Bluedroid"
-#define PRELOAD_START_TIMEOUT_MS 30000
-
-#endif
diff --git a/wpan/bluedroid_wilink/Android.mk b/wpan/bluedroid_wilink/Android.mk
deleted file mode 100644
index 6b57838..0000000
--- a/wpan/bluedroid_wilink/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright 2001-2012 Texas Instruments, Inc. - http://www.ti.com/
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-ifeq (hikey, $(TARGET_PRODUCT))
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_C_INCLUDES := system/bt/hci/include hardware/libhardware/include
-
-LOCAL_CFLAGS := -g -c -W -Wall -O2 -D_POSIX_SOURCE
-
-LOCAL_SRC_FILES := libbt-vendor-ti.c
-
-LOCAL_SHARED_LIBRARIES := \
-	libnativehelper \
-	libcutils \
-	libutils \
-	liblog
-
-LOCAL_PRELINK_MODULE := false
-LOCAL_MODULE := libbt-vendor
-LOCAL_MODULE_TAGS := optional
-#LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
-
-include $(BUILD_SHARED_LIBRARY)
-endif
diff --git a/wpan/bluedroid_wilink/libbt-vendor-ti.c b/wpan/bluedroid_wilink/libbt-vendor-ti.c
deleted file mode 100644
index 46705bd..0000000
--- a/wpan/bluedroid_wilink/libbt-vendor-ti.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2001-2012 Texas Instruments, Inc. - http://www.ti.com/
- *
- * Bluetooth Vendor Library for TI's WiLink Chipsets
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "bt_vendor"
-
-#include <stdio.h>
-#include <dlfcn.h>
-#include <utils/Log.h>
-#include <pthread.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <bt_vendor_lib.h>
-#include <bt_hci_bdroid.h>
-#include <hardware/bluetooth.h>
-
-bt_vendor_callbacks_t *bt_vendor_cbacks = NULL;
-unsigned int hci_tty_fd = -1;
-void hw_config_cback(HC_BT_HDR *p_evt_buf);
-
-/*******************************************************************************
- *
- * Function         hw_config_cback
- *
- * Description      Callback function for controller configuration
- *
- * Returns          None
- *
- * *******************************************************************************/
-void hw_config_cback(HC_BT_HDR * __unused p_evt_buf)
-{
-    ALOGV("hw_config_cback");
-}
-
-int ti_init(const bt_vendor_callbacks_t* p_cb, unsigned char * __unused local_bdaddr)
-{
-    ALOGV("vendor Init");
-
-    if (p_cb == NULL)
-    {
-        ALOGE("init failed with no user callbacks!");
-        return BT_STATUS_FAIL;
-    }
-
-    bt_vendor_cbacks = (bt_vendor_callbacks_t *) p_cb;
-
-    return 0;
-}
-
-void ti_cleanup(void)
-{
-    ALOGV("vendor cleanup");
-
-    bt_vendor_cbacks = NULL;
-}
-
-int ti_op(bt_vendor_opcode_t opcode, void *param)
-{
-    int fd;
-    int *fd_array = (int *)param;
-
-    ALOGV("vendor op - %d", opcode);
-    switch(opcode)
-    {
-        case BT_VND_OP_USERIAL_OPEN:
-            fd = open("/dev/hci_tty", O_RDWR);
-            if (fd < 0) {
-                ALOGE(" Can't open hci_tty");
-                return -1;
-            }
-            fd_array[CH_CMD] = fd;
-            hci_tty_fd = fd; /* for userial_close op */
-            return 1;        /* CMD/EVT/ACL on same fd */
-        case BT_VND_OP_USERIAL_CLOSE:
-            close(hci_tty_fd);
-            return 0;
-        /* Since new stack expects fwcfg_cb we are returning SUCCESS here
-         * in actual, firmware download is already happened when /dev/hci_tty
-         * opened.
-         */
-        case BT_VND_OP_FW_CFG:
-            bt_vendor_cbacks->fwcfg_cb(BT_VND_OP_RESULT_SUCCESS);
-            return 0;
-        case BT_VND_OP_EPILOG:
-            bt_vendor_cbacks->epilog_cb(BT_VND_OP_RESULT_SUCCESS);
-            break;
-        default:
-            break;
-    }
-
-    return 0;
-}
-
-const bt_vendor_interface_t BLUETOOTH_VENDOR_LIB_INTERFACE  = {
-    .init = ti_init,
-    .op = ti_op,
-    .cleanup = ti_cleanup,
-};
-
-int main()
-{
-    return 0;
-}
diff --git a/wpan/ti-wpan-products.mk b/wpan/ti-wpan-products.mk
index ffee1f3..8e720fb 100644
--- a/wpan/ti-wpan-products.mk
+++ b/wpan/ti-wpan-products.mk
@@ -1,5 +1,4 @@
 # This file lists the firmware, software that are specific to
 # WiLink connectivity chip on OMAPx platforms.
 
-PRODUCT_PACKAGES += uim \
-        libbt-vendor
+PRODUCT_PACKAGES += uim
